#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QFileDialog>
#include <QDirIterator>
#include <QDebug>
#include <QMessageBox>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

MainWindow::~MainWindow()
{
    delete ui;
}

/*
函数功能：通过Qt实现在一个目录下查找指定文件
参数：strFilePath,要搜索的路径
filename,要搜索的文件名
*/

void MainWindow::findLocalFileFromPath(const QString &strFilePath, const QString filename,QStringList &filelistOut)
{
    //找到的文件存入此队列
    if (strFilePath.isEmpty() || filename.isEmpty())
    {
    return ;
    }

    QDir dir;
    QStringList filters;

    filters << filename;//过滤条件，可以添加多个选项，可以匹配文件后缀等。我这里只是找指定文件
    dir.setPath(strFilePath);
    dir.setNameFilters(filters);//添加过滤器
    //QDirIterator 此类可以很容易的返回指定目录的所有文件及文件夹，可以再递归遍历，也可以自动查找指定的文件
    QDirIterator iter(dir,QDirIterator::Subdirectories);

    while (iter.hasNext())
    {
        iter.next();
        QFileInfo info=iter.fileInfo();
        if (info.isFile())
        {
            filelistOut.append(info.absoluteFilePath());
        }
    }
//    qDebug()<<filelistOut;

}

void MainWindow::on_pushButton_browser_program_files_clicked()
{
    //定义文件对话框类
       QFileDialog *fileDialog = new QFileDialog(this);
       fileDialog->resize(400,500);
       //定义文件对话框标题
       fileDialog->setWindowTitle(tr("选择文件"));
       //设置默认文件路径
//       QString tmpFilePath=D_TCRCONTROLLER_DATA_PATH;
//       QString configFile = tmpFilePath+ROBOT_COMMON_NAME+QString::number( robotId )+"/program/";
//       fileDialog->setDirectory(configFile);
       //设置文件过滤器
//       fileDialog->setNameFilter(tr("txt(*.txt)"));
       //设置可以选择多个文件,默认为只能选择一个文件QFileDialog::ExistingFiles
       fileDialog->setFileMode(QFileDialog::DirectoryOnly);
       //设置视图模式
       fileDialog->setViewMode(QFileDialog::Detail);
       //打印所有选择的文件的路径
       QStringList fileNames;
       if(fileDialog->exec())
       {
           fileNames = fileDialog->selectedFiles();
       }
        qDebug()<<fileNames;

}

void MainWindow::on_pushButton_process_clicked()
{
    QString strFilePath=ui->lineEdit_filename->text();
    QString filter="*.png";
    QStringList filelistOut;
    findLocalFileFromPath(strFilePath, filter, filelistOut);
    for(int i=0;i<filelistOut.size();i++)
    {
        QImage img;
        img.load(filelistOut[i]);
        img.save(filelistOut[i]);
        qDebug()<<"changed "<<filelistOut[i];
    }


    QMessageBox::information(NULL, "information", "完成", QMessageBox::Yes );

}
